#include <string>
#include <iostream>
#include <cassert>
#include <cerrno>
#include <cstring>
#include <cstdlib>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>

using namespace std;

const char* NAMED_PIPE = "./named_pipe"; // 命名管道的名字(路径 + 名称)具有唯一性

bool creatFifo(const string& path) {
    int n = mkfifo(path.c_str(), 0666); // 0666为初始权限，最后得到的权限为mode = mode & (~umask)
    if (n == 0) {
        return true;
    }
    else {
        cout << "errno: " << errno << " error message: " << strerror(errno) << endl;
        return false;
    }
}

void removeFifo(const string& path) {
    int n = unlink(path.c_str()); // 关闭命名管道
    assert(n == 0);
    (void)n;
}